VMPC ("Variably Modified Permutation Composition") is encryption technology designed by Bartosz Zoltak, publicly presented in 2004 at an international cryptography conference Fast Software Encryption in Delhi, India.
The core of the technology is the VMPC one-way function, applied in an encryption algorithm - the VMPC stream cipher.
The VMPC function is a transformation of n-element permutations defined as:
for x from 0 do n-1: g(x) = VMPC(f(x)) = f(f(f(x))+1)
Interestingly inverting the function, i.e. obtaining f from g appears to be a complex problem. According to computer simulations the average number of operations required to recover f from g for a 16-element permutation is about 211, for 64-element permutation - about 253 and for a 256-element permutation - about 2260.
Theoretically speaking - if these results were possible to be proved - it would imply that VMPC is a true one way function, which would solve the famous P vs NP problem.
In 2006 at Cambridge University Kamil Kulesza published a paper "On inverting the VMPC one-way function", which investigated the issue but it left the problem open - the one-wayness of the function was neither proved nor denied.
The VMPC one-way function is used in an encryption algorithm - the VMPC stream cipher. The algorithm is very efficient in software implementations (encrypt L bytes of plaintext do):
1. n = 0 2. Repeat steps 3-6 L times: 3. s = P[ (s + P[n]) mod 256 ] 4. Output = P[ (P[P[s]]+1) mod 256 ] 5. Temp = P[n] P[n] = P[s] P[s] = Temp 6. n = (n + 1) mod 256
Where 256-element permutation P and integer value s are obtained from the encryption password using the VMPC-KSA (Key Scheduling Algorithm), which can be found at the VMPC Homepage along with the VMPC-MAC (Message Authentication Code) allowing to authenticate messages encrypted with the VMPC Stream Cipher.